확률분포

보통 흔히들 확률변수 X가 어떠한 분포를 따르고 있다고 가정을 한다. 아마 통계방법론이나 통계학입문에서 가장 많이 등장하는 글이 아닐까 싶다. 그런데 어떤 확률분포를 따르고 있음을 알고 있다는 것이 왜 중요할까?

확률분포를 알고 있다는 것은, 흔히 말해서 우리가 궁금해할 수 있는 모든 것을 알 수 있는 상태라고 생각할 수 있다. 예를 들어, 성인 남성의 키가 정규분포를 따른다고 하면, 우리는 성인 남성 키에 대해서 생각할 수 있는 궁금증(평균, median, quantile, 분산 등등)을 모두 찾을 수 있다. 그리고 더 나아가서 실현된 확률변수 값이 나올 수 있는 확률도 계산할 수 있다.

그렇다면 이제 한 걸음 더 나아가보자. 단순히 숫자로 이루어진 키와 같은 데이터 말고, 다른 signal도 확률변수라고 이야기할 수 있을까?

확률변수 사진

사실 우리가 고정관념에서 벗어나면 사진과 같은 이미지도 확률변수라고 생각할 수 있다. 위에서 예시로 들었던 “키”라는 확률변수를 “얼굴(사진)”으로 대체해서 생각해보자. 마치 키가 큰 사람, 작은 사람이 있던 것처럼 우리가 가지고 있는 얼굴도 “안경 쓴 얼굴”, “머리카락이 짧은 얼굴” 다양한 특성이 공존하다는 차이밖에 없다. 그렇다면 어떤 분포를 따른다고 가정해야할까?

사람 얼굴이 실제로 따르고 있는 확률분포라는 것이 없기 때문에, 굉장히 논센스한 질문이다. 이 질문에 정답을 말하기 전에, 하얀 백지에 사람을 그려본다고 생각해보자. 처음에 눈과 입만 그려보면서, 조금씩 위의 질문에 답을 해나가보자. 이 과정을 잘 따라가면, 결국 우리는 확률분포를 더 잘 이해할 수 있게 될 것이다. 특히 이는 generative model을 이해하는데 큰 도움이 된다.

사람의 눈과 입은 각각 정규분포를 따른다고 가정해보자. 눈과 입이 유별나게 작거나 반대로 유별나게 큰 사람도 적기 때문에 나름 합리적인 가정이라고 할 수 있다. (물론, 음수는 없으므로, truncated normal 분포를 따른다고 생각하는 것이 더 잘 와닿을 수 있으나, 편의상 정규분포를 가정하겠다. + 알고보니 실제로는 정규분포를 따르지 않을 수 있다. 이를 가리켜서 coverage error라고 한다. 예를 들어 눈이 크고 턱이 갸름한 경우가 더러 있어서 평균으로부터 대칭적으로 감소해야하는 정규분포에 맞지 않는다고 하더라도, 이런 경우를 error로 무시하고 이야기를 진행하는 것이다. 이러한 에러는 우리가 어떤 확률변수를 수리적으로 계산이 가능한 확률분포로 대체해서 설명하고자 하면 반드시 생기는 에러라고 할 수 있다.)

위의 가정을 바탕으로, 우리가 가지고 있는 “얼굴”이라는 데이터를 잘 조합해서 우리는 확률분포의 모수를 추론하기 시작한다. 정규분포는 평균과 분산이라는 두 가지 모수로 요약이 가능하므로, 결국, 우리는 각각 2개, 즉 총 4개의 모수를 추정하기 위해 애쓴다. (두 확률변수의 상관성은 없다고 가정하겠다. 물론 있어도, 추정가능하다.) 그리고 그 방법 역시 다양하다. 사실 통계학 학부를 졸업했다라고 이야기하는 것은 그 수많은 방법 중에 두 가지 정도 경험해봤다라고 생각하면 될 것이다. 물론, 그래도 가장 유명하고 보편적인 방법이니깐 쓸데 없는 걸 배운 정도는 아니다.

어떤 방법으로 추정할지 정했고, 이에 맞는 objective function을 정의했고, 이를 optimize하여서 필요한 모수를 추정해냈다고 생각해보자. 그러면 이제 우리는 얼굴(눈과 입 밖에 없긴하지만)에 대한 확률분포를 추측해낸 것이다. 그러면 이제 비로소 우리는 얼굴에 대한 많은 것들을 도전해볼 수 있다. 그 중 대표적인 것이 샘플링을 통해서 새로운 눈과 입의 인물을 만들 수 있다. 물론, 엄밀한 의미의 “새로운”은 아니다. 단지 샘플링되지 않았던 인물이 새롭게 샘플링이 되어서(realized) 처음보는 인물처럼 느껴질 뿐이긴하다. 어찌되었건 일일이 구할 수 없던 데이터를 마음껏 추출할 수 있는 상황에 놓여있는 것은 분명하다.

이제 코도 같이 그려본다고 생각하자. 차원을 늘려서, 코의 크기도 정규분포를 따르고 이를 기존의 다중정규분포에 포함시키기만 하면 된다. 이렇게 점차 차원을 늘려감으로써 우리는 “사람 얼굴”이라는 점차 복잡한 데이터를 설명할 수 있게 된다.

이렇게 되면, 우리는 이제 그 확률분포만을 가지고, “아! 눈이 크고, 입은 작고, 코는 높은 사람은 이 정도로 많이 있구나!”를 생각할 수 있다. 그러면 조금 희망이 생긴다. 얼굴이 복잡한 데이터라고 할지라도 하나씩 뜯어보면 어떤 분포를 따른다고 생각할 수 있을 것 같고, 그렇게 잘 합치면 우리는 사람 얼굴의 분포에 대해서 이야기할 수 있지 않을까? 예를 들어서, “안경을 쓰고, 앞머리가 길며 속눈썹이 짧은 아시아 남성”과 같이 훨씬 더 많은 정보를 포함하고 있더라도 말이다.

그러나 안타깝게도 이처럼 자세하고 여러 특징들을 담아내기 위해서는 기존에 알던 분포를 사용하는 것은 불가능에 가깝다. 하나하나 특징들을 모두 개별 설명변수로 집어넣는 것은 무한한 차원에 가깝게 늘어나는 일이 되버릴 뿐만 아니라, 설사 가능하더라도 각각의 설명변수들이 제각각의 확률분포를 띄기 때문에 이들의 joint distribution을 구하는 것이 쉽지 않기 때문이다. 예를 들어 머리카락 길이는 여성들 사이에서는 정규분포를 따를지라도, 남성과 여성을 모두 고려하면 양 극단값을 크게 가지는 분포를 띌 것이다. 이처럼 아무리 다른 설명변수들이 다중정규분포로 표현이 가능해도 어느 것 하나만 전혀 다른 분포를 가지면 이를 쓸 수 없듯이, 특성이 많아질수록, 우리가 알고 있는 분포를 가정하는 것은 현실성이 없어지게 된다. (실제로 불가능하다.)

neural network

그렇다면, 우리는 사람 얼굴이 어떤 확률분포로부터 실현된 값이라고는 말할 수 없을까? 불가능한 일은 아니다. neural network가 좋은 해결책이 될 수 있기 때문이다. 더 엄밀히 말해서는 “least squares” method를 사용해서 error(objective function)을 정의하고 (back)propagation을 통해서 최적화해놓은 모델에, 임의의 input을 집어넣을 때마다 우리가 생각할 수 있는 얼굴에 대한 분포에 맞추어, 얼굴이 output으로 추출되는 과정 속에서, 확률분포의 개념을 대입할 수 있다.

즉, 정의된 확률분포를 바탕으로, 새로운 확률변수를 추출해 낼 수 있으며, 이들은 자연히 해당 변수의 분포적 성질을 잘 만족해서 추출이 되듯이, “얼굴”도 nn가 분포적 성질에 잘 맞추어서 매번 새로운 얼굴들을 추출해주는 것이 가능해진다. 그리고 이 방법이 결국 generative model의 핵심이라고 할 수 있다. 그렇다면 우리가 해야하는 일은, nn로 하여금 확률변수가 분포적 성질을 잘 만족하게끔 training을 시키는 것이라고 할 수 있다. 예를 들어, 실제로 안경을 낀 남성이 30%라면, 우리가 가지고 있는 nn를 통해서 새로운 얼굴을 추출해낼 때, 30%의 비율로 안경을 착용한 남성이 나오면 되는 것이다.

흔히 machine learning에서 asymptotic analysis가 불가능하듯이 자연히 얼굴을 확률변수라고 생각하고, 확률분포를 추정해낸다고 해도, 우리가 궁금해는 모든 것들을 해결해줄 수는 없는 노릇이다. 다만, 문자 그대로 해당 확률변수가 가지고 있는 분포를 그대로 답습하게 모델을 학습시키는 것이 가능하다는 의미에 가깝다.

이러한 단점에도 불구하고, 매우 큰 장점은 nn는 coverage error가 필시 통계 society보다 작다는 것이다. 일반적으로 정규분포를 따른다고 가정하고, 모수를 찾으면, 우리는 평균/ 분산 등등의 많은 값들을 찾아낼 수 있지만, 만약 그 변수가 알고보니 정규분포를 따르지 않았다면, 사실 무용지물이 되버린다. 그러나 neural network는 오직 결과만을 가지고 이야기한다. 결국 분포적으로 데이터가 가지는 모습을 잘 추적해내는 것이 중요한 것이다.

요약하자면, 과거에는 확률값이 계산가능한 수준에 있었던 극소수의 몇몇 분포에 대해서만 해당 분포의 모수추정치를 구할 수 있었기 때문에 확률분포라는 개념자체가 굉장히 안정적이었다. 대표적으로 mle를 구하여 확률분포를 추정하는 일은 여전히 학부에서도 손으로 문제를 풀며 익힐 수 있는 문제이다. 그러나 컴퓨터 공학의 발달로 최적화 연산들이 가능해지면서 estimation의 영역이 넓어졌다. 따라서 해당 분야에서도 확률분포라는 용어를 차용해가면서 개념 자체가 넓어졌다.